home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Spanish Scene 1
/
SpanishScene1.iso
/
spanish pack n°1 by llfb
/
revistas
/
fanzine
/
fanzine01.dms
/
fanzine01.adf
/
39
< prev
next >
Wrap
Text File
|
1977-12-31
|
10KB
|
299 lines
C U R S O D E C
Y M A N E J O D E L L A T T I C E - C C O M P I L E R
(c) Warlord, Abril 1992
En esta sección daré un breve curso de C, para una vez finalizado éste,
comentar a fondo el Lattice C compiler. Como digo,no entraré demasiado en
profundidades sobre el lenguaje C. No seguiré el guión de ningún libro, pero
cualquiera que consultéis vendrá mas o menos como yo lo explico. Os
recomiendo el de Anaya de Turbo C.
Tampoco voy a hacer un artículo introductorio diciendo eso de que el C es
muy bonito y útil y todo eso que se suele decir. Iré directamente al grano.
De todos modos si queréis enteraros un poco de esto, os remito a cualquier
buen libro de C, o sin ir más lejos al primer número de la AMIGA ZETA.
LENGUAJE C:
----------
Tipos de caracteres:
Entero decimal.Se representa por %d
Caracter.Representado por %c
Tira de caracteres.Se representa por %s
Numero en punto flotante,con notación exponencial.Se representa por %e
"" "" "" "" decimal.Se denota por %f
%g significa que usará cualquiera de los dos anteriores.El que sea más
corto.
%u Entero decimal sin signo
%o Entero octal sin signo.
%x entero hexadecinal sin signo.
Códigos de control:
\n ............ nueva línea
\t ............ tabulado
\b ............ retroceso
\r ............ retorno de carro
\f ............ salto de página
\\ ............ barra atrás (ie,\)
\' ............ apóstrofe (ie,')
\" ............ comillas (ie,")
¡Ostia!, ¡Que rollo!.
Veamos un pequeño ejemplo:
main ()
{
printf("Hola.Me llamo %s tengo %d años y vivo en %s\n",JMC,22,CADIZ);
printf("Esta es laa\b segunda linea");
printf("Esta no es la tercera porque no puse \\n \n");
printf("Esta si es la tercera, porque puse \\n");
}
salida:
Hola. Me llamo JMC tengo 22 años y vivo en Cadiz
Esta es la segunda lineaEsta no es la tercera porque no puse \n
Esta si es la tercera, porque puse \n
Como veréis,para imprimir los distintos datos hemos utilizado los formatos
anteriores: %d para escribir un número entero (22) y %s para pintar dos ca-
denas de caracteres (JMC y Cadiz).
En este ejemplo, podemos observar:
main() = Significa que es el bloque principal del programa (y en este
caso el único)
{,} = Se colocan al empezar un bloque, un bucle,...
; Se coloca al final de cada instrucción.
printf = Esta orden es la utilizada para inprimir un mensaje en
panatalla.(más adelante veremos ésta y otra más).
Hemos utilizado \b para borrar un carácter
Hemos utilizado \\n para que escriba "\n" y no lo interprete como el
final de la línea. Desde luego,podíamos tambien haber escrito:
printf("primera línea \n segunda línea \n tercera línea\n")
Lo que simplificaría bastante lo anterior
DATOS EN C:
----------
Anteriormente hemos visto algunos tipos de datos:Enteros,decimales, ...
y cómo son representados.Vamos a explicar ahora esto con algo más de deta-
lle:
ENTEROS:
Son todos los números sin coma decimal: -1, -23, 4, 0 ....
Las variables que vayan a contener a enteros se definen como INT.
Por ejemplo, INT A; significaría que A sólo va a contener a variables en-
teras.Sin embargo, es corriente que necesitemos enteros más grandes o más
pequeños que el rango que nuestros 16 bits nos permiten:
short a; es un entero de tan sólo 8 bits
long a; entero de 32 bits
es decir:
int a; es un entero de -32768 a +32767
short a; entero de -128 a +127
long a; entero de -2147483648 a +2147483647
Si nos fijamos,todas estas variables enteras admiten recorrido negativo.Si
ésto no nos interesara, porque la variable nunca fuera negativa se utiliza
lo mismo pero poniendole delante "unsigned", como: unsigned short a.Con es-
to conseguimos que en vez de -128 a +127,sea de 0 a 255,
CONSTANTES EN PUNTO FLOTANTE:
Se utilizan para números muy grandes o muy pequeños. Su utilidad es mani-
fiesta en el ahorro de memoria. Se precisa de muchos bytes si queremos al-
macenar una gran cadena de números. Sin embargo, en punto (o coma) flotan-
te, la necesidad de memoria es mínima. Se representan por
la mantisa y el exponente, así: -1.5 x E+6, que significa:
\|/
-1.5 x 1000000 (6 ceros)
Se declaran como float. (p.e., float a;)
Para mayor precisión, se utiliza double (o long float) que reservan el do-
ble de bytes (64!)
CARACTERES:
Cualquier letra o número puede ser un caracter (a,#,3,N,...) se declaran
como "char".Ocupan 8 bits.
Todo esto es muy bonito, pero.... dame un ejemplo ....
Pues bien, ahí vá:
main()
{
char a;
short b;
float c;
a='H';
b=1000;
c=3.2e-4;
}
¿Creen que está bien?.... ¡No!, se ha asignado b=1000,pero b es del tipo
short, por lo tanto sus valores no pueden pasar de 255. Por lo tanto,o se
pone b=255, o bien se cambia "short b" por "int b".
Supongamos ahora que queremos representar una cadena de caracteres, como
por ejemplo, un nombre. ¿Cómo podemos hacer esto, con lo visto hasta aho-
ra?. Evidentemente, como muchos de ustedes ya han pensado, se vuelve a
recurrir a la expresión "char". Si queremos asignar una cadena de caracte-
res como por ejemplo, "Mi mamá me mima" a una variable, bastará hacer ...
main()
{
char frase[15];porque tiene 15 letras o caracteres
....
frase="mi mamá me mima";/*¡ojo!: '' para caracteres, "" para frases.*/
De ahora en adelante, llamaremos 'string' a una cadena de caracteres.
/* Programa chorra 1*/
#define REVISTA "Fanzine"
main()
{
char nombre[10];
printf("Amigamaniacoadicto, dime tu nombre... ");
scanf("%s",nombre);
printf("Hola, %s, ¿Quieres colaborar en $s\n",nombre,REVISTA);
}
Aquí hay varias cosas nuevas:
* Un comentario . Va entre */ y se cierra con */. ¡Nunca equivocarse de
orden, os traería funestas consecuencias. Este comentario puede colocar-
se en cualquier lugar del programa.
* El comando define. Lo que hace, es que al ponerlo antes del main(),
asignamos a la variable REVISTA la cadena "fanzine" (que REVISTA, esté
en mayúsculas no es casual. Este tipo de variables se suelen y se deben
poner en mayúsculas). Más adelante volveremos sobre este comando.
Todo esto está muy bien... ¿pero cómo puedo hacer un programa?
----------------------------
Explicar el funcionamiento del Lattice C, es harto difícil. Pero ahí va
una pequeña muestra para que podáis compilar y ejecutar un programa:
1.Instalar el Lattice C. Es fácil, basta con que leas el read.me que se
encuentra en el primer disquette del Lattice C
1. Mediante un editor escribe el programa. Se recomienda el Cygnus (CED),
Es conveniente instalar el CED en el directorio C del disco 1.
2.Una vez escrito, grabarlo a RAM: o a otro disco. Llamémosle Estupidez1.c
3.Vete a la RAM (CD RAM:)
4.Escribe: lc -L Estupidez1 (si está en RAM, si no, sería df0:Est...)
Ojo:
-L (L mayúscula)
El nombre debe ir seguido de .c
5.Si lo has hecho bien, el programa será compilado y linkado (su significa-
do para otra lección). Observaréis que en RAM han aparecido nuevos ficheros
con distintas extensiones. Para ejecutar nuestro primer programa basta con
escribir estupidez1 y ... ¡Ohhhhh!
Si no tenéis editor, podéis hacerlo con el LSE (Lattice Screen Editor). Es
un editor que incluye el propio Lattice C, pero que te permite otras muchas
opciones (compilar...). Su manejo, debe ser explicado en otra ocasión. Por
ahora, basta saber que se carga escribiendo lse. Escribir el programa y
salvarlo a Ram, siguiendo los anteriores pasos.
COMANDOS BASICOS DEL C:
----------------------
* PRINTF
Ya hemos visto como vá. Su formato es:
printf(" <frase+códigos>",variables);
ejemplo:
....
ordenata="amiga";
....
printf("¡Hola!, yo tengo un %s \n",ordenata);
* SCANF
También hemos visto un ejemplo anteriormente. Se utiliza para leer datos
desde un dispositivo (entiéndase teclado, disco...). Su formato es muy simi-
lar al de printf. Un ejemplo:
scanf("%s",nombre);
otro más:
scanf("Dame tu nombre %s",nombre);
¡Ooops!, ¡Un momento!, esto no es correcto. Esta función no admite esto.
Lo correcto sería:
printf("Dame tu nombre\n");
scanf("%s",nombre);
Otro ejemplo más:
printf("Dime tu edad");
scanf ("%s",&edad);
¡Espera un momento!, ¿qué es el &?
Bueno, este ejemplo nos lleva a un concepto FUNDAMENTAL. El de PUNTEROS.
PUNTEROS "POR UN TUBO":
----------------------
Entender el concepto de puntero es fundamental en C y en cualquier lenguaje
de bajo nivel.
Cuando definimos ... int edad; ,estamos diciendo que la variable "edad"
va a ser un entero. Si asignamos edad=23, este número se guarda en una
determinada posición de memoria, por ejemplo en la posición 4444.
Entonces:
edad=22
&edad=4444
¿Está claro?. &variable nos dá la dirección real de memoria donde se
encuentra la variable. Se dirá que &edad es una CONSTANTE PUNTERO.
¡Ok!, ¡ya me enterado!, pero ... ¿y si tenemos lo contrario?. Veamos:
memoria =&edad; /*(Ahora memoria=4444)*/
¿Qué sucede si queremos conocer el contenido de memoria?. Esto nos lleva
al operador de indirección "*". Un ejemplo:
edad = 22;
memoria = &edad; /*ahora memoria=4444*/
años = *memoria; /*ahora años=23*/
Como podemos observar, el operador "*" hace lo conntrario que &. Nos
dá el valor contenido en la dirección de memoria apuntada por memoria.
¡Cuidado!. El manejo de punteros suele crear verdaderos quebraderos de
cabeza. Si por error pusiésemos años = *edad, ¿qué pasaría?. Como edad
vale 22, ahora años sería el valor que se encontrara almacenado en la
dirección 22 y nó en la 4444.
Bueno colegas AmigaCmaniacoadictos, creo que ya he escrito suficiente por
esta vez. Pero no lo olvidéis, en el próximo .... MAS.